﻿using System;
using System.Drawing;
using AForge.Imaging;
using System.Drawing.Imaging;
using System.Collections.Generic;
using BrainTechLLC.ImageOperators;
using System.ComponentModel;
using AForge.Imaging.Filters;
using BrainTechLLC.ImageOperatorsNonAForgeDependent;

namespace BrainTechLLC.ImageOperators
{    
    public interface ICanApply
    {
        Bitmap Apply(string fileName, Bitmap bmp, bool returnCopyIfNoAction, bool wantPostProcessInfo, ref List<RGBAndCoordinate> postProcessInfo, ref int width, ref int height);
        Bitmap Apply(string fileName, Bitmap bm, bool returnCopyIfNoAction);
        Bitmap Apply(string fileName, BitmapData imageData, bool wantPostProcessInfo, ref List<RGBAndCoordinate> postProcessInfo, ref int width, ref int height);
        UnmanagedImage Apply(string fileName, UnmanagedImage image, bool wantPostProcessInfo, ref List<RGBAndCoordinate> postProcessInfo, ref int width, ref int height);
        bool ProcessBitmap(FrameInfo frameInfo);
        event EventHandler<ObjectEventArgs<Bitmap, string, string, ISingleFilter>> BeforeFilterBitmap;
        event EventHandler<ObjectEventArgs<Bitmap, string, string, ISingleFilter>> AfterFilterBitmap;
    }
}